perm filename SEEIN.OSA[1,ALS] blob
sn#001113 filedate 1972-07-24 generic text, type T, neo UTF8
00010 BEGIN "SEE"
00020 DEFINE ⊂="COMMENT"; ⊂ 5/22/72;
00030 ⊂ This program analyses TABLES.DAT and reports data which hopefully
00040 give some indication as to their effectiveness;
00050
00060 REQUIRE "COMSUB.HDR[SYS,ALS]" SOURCE_FILE;
00070
00080 DEFINE DATSIZ="1280",BUFEXS="43",BUFSIZ="1323";
00090 DEFINE CR="'15",LF="'12",TB="'11",CRLF="CR&LF",CRLFO="CR&'177&'21";
00095 REQUIRE "BLOCKS.HDR[SYS,THO]" SOURCE_FILE;
00150 INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,EOF,IEOF,EOFA,BRK;
00170 INTEGER I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,INK,II;
00180 INTEGER INTOT;
00190 EXTERNAL PROCEDURE SPOOL(STRING S; INTEGER IOCHAN,FLAGS);
00200 INTEGER ARRAY COHG1,COHB1,COHG2,COHB2[0:7];
00210 INTEGER ARRAY COHG3,COHB3[0:3];
00220 INTEGER ARRAY PH,APH,BPH,CPH[0:4];
00230 INTEGER ARRAY DPH,EPH,FPH[0:3,0:3,0:4];
00240
00245 TABIN(INTOT);
00345
00440 N←INTOT;
00450
00460 OPEN(CHAN3,"DSK",0,0,10,0,0,EOF);
00470 ENTER(CHAN3,"TABSUM.DOC",0);
00480 OUT(CHAN3,TB&"SIGNATURE TABLE SUMMARY as of "&DATIME&CRLF);
00490
00600 II←0;
00610 FOR I←N*74 STEP 74 UNTIL TABSIZ-75 DO BEGIN
00612 IF II=2 THEN BEGIN OUT(CHAN3,'14); II←0; END;
00615 IF II=0 THEN
00620 OUT(CHAN3,"Name"&TB&"TYPE"&TB&"Learn"&TB&"Gate"&TB&"IN1"&TB&"IN2"&TB&"IN3"&TB&"IN4"&TB&"IN5"&TB&"IN6"&CRLF&LF);
00630 IF LIST[N]≠0 THEN BEGIN IF LIST[N]≠1 THEN BEGIN "DECODE" STRING LEARN;INTEGER K1,K2,K3,K4;
00640 IF LIST[N+LISSIZ%10]≥CVSIX("Q0") THEN BEGIN
00650 K←LIST[N+LISSIZ%5]; K1←K LSH -18; K2←(K LSH 18) LSH -30;
00660 K3←(K LSH 24) LSH -30; K4←(K LSH 30) LSH -30;
00670 LEARN←CVXSTR(PHLIST[K1])[1 TO 2]&CVXSTR(PHLIST[K2])[1 TO 2]&
00680 CVXSTR(PHLIST[K3])[1 TO 2]&CVXSTR(PHLIST[K4])[1 TO 2];
00690 END
00700 ELSE LEARN←CVXSTR(LIST[N+LISSIZ%5]);
00710
00720 OUT(CHAN3,CVXSTR(LIST[N])&TB&CVXSTR(LIST[N+LISSIZ%10])&
00730 LEARN&TB&CVXSTR(LIST[N+3*LISSIZ%10])&TB&
00740 CVXSTR(LIST[N+4*LISSIZ%10])&TB&
00750 CVXSTR(LIST[N+LISSIZ%2])&TB&CVXSTR(LIST[N+6*LISSIZ%10])&TB&
00760 CVXSTR(LIST[N+7*LISSIZ%10])&TB&CVXSTR(LIST[N+8*LISSIZ%10])&TB&
00770 CVXSTR(LIST[N+9*LISSIZ%10])&CRLF); END "DECODE"; END ELSE DONE;
00775 OUT(CHAN3,CRLF);
00780
00790 IF LIST[N+LISSIZ%10]<CVSIX("Q0") THEN BEGIN
01000
01010 K←TABLES[I+1];
01020 INK←(K LSH 6) LSH -30;
01030
01040 ⊂ **** P2 ****;
01050 IF INK=2 THEN BEGIN
01060
01270
01280 OUT(CHAN3,"IN2↓ IN1→ OUTPUT VALUES"&CRLF&" 0 1 2 3 4 5 6 7"&CRLF&LF);
01290 FOR J←0 STEP 1 UNTIL 7 DO BEGIN
01300 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" ");
01310 FOR K←0 STEP 1 UNTIL 7 DO BEGIN
01320 L←(J LSH 3)+K+I+10;
01330 M←TABLES[L]; M←((M LSH 32) LSH -32);
01340 OUT(CHAN3,CVS(M));
01350 END;
01360 OUT(CHAN3,CRLF);
01370 END;
01380
01390 OUT(CHAN3,CRLF&"IN2↓ IN1→ TOTAL USAGE"&CRLF&" 0 1 2 3 4 5 6 7"&CRLF&LF);
01400 FOR J←0 STEP 1 UNTIL 7 DO BEGIN
01410 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" "); SETFORMAT(6,0);
01420 FOR K←0 STEP 1 UNTIL 7 DO BEGIN
01430 L←(J LSH 3)+K+I+10;
01440 M←TABLES[L]; O←((M LSH 16) LSH -20); P←(M LSH -20); M←O+P;
01450 IF M=0 THEN OUT(CHAN3," ") ELSE OUT(CHAN3,CVS(M));
01460 END;
01470 OUT(CHAN3,CRLFO); ⊂ Delay formfeed;
01480 END;
01490
01500 ⊂ **** P3 ****;
01510 END ELSE IF INK=3 THEN BEGIN
01520
01790 OUT(CHAN3,CRLF&TB&"OUTPUT VALUES"&CRLF);
01800 OUT(CHAN3,"IN3↓ IN2→ 0 1 2 3"&CRLF&
01810 " IN1→ 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3"& CRLF&LF);
01820 FOR J←0 STEP 1 UNTIL 3 DO BEGIN
01830 Q←I+10+(J LSH 4);
01840 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" ");
01850 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
01860 R←Q+(K LSH 2);
01870 FOR P←0 STEP 1 UNTIL 3 DO BEGIN
01880 M←TABLES[R+P]; M←((M LSH 32) LSH -32);
01890 OUT(CHAN3,CVS(M));
01900 END; OUT(CHAN3," ");
01910 END; OUT(CHAN3,CRLF);
01920 END; OUT(CHAN3,LF);
01930
01940 OUT(CHAN3,CRLF&TB&"TOTAL USAGE"&CRLF);
01950 OUT(CHAN3,"IN3↓ IN2→ 0 1 2 "&
01960 " 3"&CRLF&
01970 " IN1→ 0 1 2 3 0 1 2"&
01980 " 3 0 1 2 3 0 1 2 3"& CRLF&LF);
01990 FOR J←0 STEP 1 UNTIL 3 DO BEGIN
02000 Q←I+10+(J LSH 4);
02010 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" ");
02020 SETFORMAT(6,0);
02030 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
02040 R←Q+(K LSH 2);
02050 FOR P←0 STEP 1 UNTIL 3 DO BEGIN
02060 M←TABLES[R+P];
02070 T←(M LSH -20)+((M LSH 16) LSH -20);
02080 IF T=0 THEN OUT(CHAN3," ") ELSE OUT(CHAN3,CVS(T));
02090 END; OUT(CHAN3," ");
02100 END; OUT(CHAN3,CRLFO); ⊂ Delay form feed;
02110 END; OUT(CHAN3,LF);
02120
02130 END; ⊂ CHANGE TO END ELSE to add 6-input case;
02140
02150 ⊂ **** Q ****;
02160 END ELSE BEGIN ⊂ Start of Q;
02170 IF I>(TABSIZ -149) THEN DONE;
02180 L←M←P←Q←R←S←T←0;
02190 FOR J←0 STEP 1 UNTIL 63 DO BEGIN
02200 K←TABLES[I+10+J];
02210 L←L+((K LSH 2) LSH -20);
02220 K←TABLES[I+84+J]; ⊂ Get second half of Q table;
02230 M←M+(K LSH - 27);
02240 P←P+((K LSH 9) LSH -27);
02250 Q←Q+((K LSH 18) LSH -27);
02260 R←R+((K LSH 27) LSH -27);
02270 END; SETFORMAT(1,0);
02280 OUT(CHAN3,"Total Usage- N.A. "&CVS(L)&" Ph1 "&CVS(M)&" Ph2 "&CVS(P)&
02290 " Ph3 "&CVS(Q)&" Ph4 "&CVS(R)&CRLF&LF);
02300
02610
02620 K←TABLES[I+1];
02630 K←(K LSH 6) LSH -30;
02640
02650 ⊂ **** Q2 ****;
02660 IF INK=2 THEN BEGIN
02670
02680 OUT(CHAN3,CRLF&"IN2↓ IN1→ OUTPUT VALUES"&CRLF&
02690 " 0 1 2 3 4 5 6 7"&CRLF&
02700 " NA 1 2 3 4 NA 1 2 3 4 NA 1 2 3 4 NA 1 2 3 4 NA 1 2 3 4 NA 1 2 3 4 NA 1 2 3 4 NA 1 2 3 4"&CRLF&LF);
02710 FOR J←0 STEP 1 UNTIL 7 DO BEGIN
02720 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" ");
02730 FOR K←0 STEP 1 UNTIL 7 DO BEGIN
02740 L←(J LSH 3)+K+I+10;
02750 M←TABLES[L];
02760 P←((M LSH 18) LSH -33);
02770 Q←((M LSH 21) LSH -33);
02780 R←((M LSH 24) LSH -33);
02790 S←((M LSH 27) LSH -33);
02800 T←((M LSH 30) LSH -33);
02810 OUT(CHAN3,CVS(P)&CVS(Q)&CVS(R)&CVS(S)&CVS(T)&" ");
02820 END;
02830 OUT(CHAN3,CRLF);
02840 END;
02850
02860 OUT(CHAN3,CRLF&"IN2↓ IN1→ TOTAL USAGE"&CRLF&" 0 1 2 3 4 5 6 7"&CRLF&LF);
02870 FOR J←0 STEP 1 UNTIL 7 DO BEGIN
02880 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" "); SETFORMAT(6,0);
02890 FOR K←0 STEP 1 UNTIL 7 DO BEGIN
02900 L←(J LSH 3)+K+I+10;
02910 M←TABLES[L];
02920 Q←TABLES[L+74];
02930 P←((M LSH 2) LSH -20)+(Q LSH -27)+((Q LSH 9) LSH -27)+((Q LSH 18) LSH -27)+((Q LSH 27) LSH -27);
02940 IF P=0 THEN OUT(CHAN3," ") ELSE OUT(CHAN3,CVS(P));
02950 END;
02960 OUT(CHAN3,CRLFO); ⊂ Delay form feed;
02970 END;
02980
02990 ⊂ **** Q3 ****;
03000 END ELSE IF INK=3 THEN BEGIN
03010
03285
03490 OUT(CHAN3,CRLF&TB&"OUTPUT VALUES"&CRLF);
03500 OUT(CHAN3,"IN3↓ IN2→ 0 1 2 3"&CRLF&
03510 " IN1→ 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3"& CRLF&LF);
03520
03530 FOR J←0 STEP 1 UNTIL 3 DO BEGIN
03540 Q←I+10+(J LSH 4);
03550 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" "); SETFORMAT(1,0);
03560 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
03570 R←Q+(K LSH 2);
03580 FOR P←0 STEP 1 UNTIL 3 DO BEGIN
03590 M←TABLES[R+P];
03600 O←(M LSH 18) LSH -33;
03610 S←(M LSH 21) LSH -33;
03620 T←(M LSH 24) LSH -33;
03630 U←(M LSH 27) LSH -33;
03640 V←(M LSH 30) LSH -33;
03650 OUT(CHAN3,CVS(O)&CVS(S)&CVS(T)&CVS(U)&CVS(V)&" ");
03660 END; OUT(CHAN3," ");
03670 END; OUT(CHAN3,CRLF);
03680 END; OUT(CHAN3,LF);
03690
03700 OUT(CHAN3,CRLF&TB&"TOTAL USAGE"&CRLF);
03710 OUT(CHAN3,"IN3↓ IN2→ 0 1 2 "&
03720 " 3"&CRLF&
03730 " IN1→ 0 1 2 3 0 1 2"&
03740 " 3 0 1 2 3 0 1 2 3"& CRLF&LF);
03750 FOR J←0 STEP 1 UNTIL 3 DO BEGIN
03760 Q←I+10+(J LSH 4);
03770 SETFORMAT(2,0); OUT(CHAN3,CVS(J)&" ");
03780 SETFORMAT(6,0);
03790 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
03800 R←Q+(K LSH 2);
03810 FOR P←0 STEP 1 UNTIL 3 DO BEGIN
03820 M←TABLES[R+P];
03830 T←((M LSH 2) LSH -20);
03840 M←TABLES[R+P+74];
03850 T←T+(M LSH -27)+((M LSH 9) LSH -27)+((M LSH 18) LSH -27)+((M LSH 27) LSH -27);
03860 IF T=0 THEN OUT(CHAN3," ") ELSE OUT(CHAN3,CVS(T));
03870 END; OUT(CHAN3," ");
03880 END; OUT(CHAN3,CRLFO); ⊂ Delay form feed;
03890 END; OUT(CHAN3,LF);
03900
03910 ⊂ **** Q6 ****;
03920 END ELSE IF INK=6 THEN BEGIN
03930
03940 OUT(CHAN3,TB&"TOTAL USAGE"&CRLF);
03950 OUT(CHAN3,"IN6↓ IN3→ 0 1"&CRLF&
03960 " IN5↓ IN2→ 0 1 0 1"&CRLF&
03970 " IN4↓ IN1→ 0 1 0 1 0 1 0 1"&CRLF&LF);
03980 FOR J←0 STEP 1 UNTIL 1 DO BEGIN
03990 FOR K←0 STEP 1 UNTIL 1 DO BEGIN
04000 FOR L←0 STEP 1 UNTIL 1 DO BEGIN
04010 W←I+10+(J LSH 5)+(K LSH 4)+(L LSH 3);
04020 SETFORMAT(2,0); OUT(CHAN3," ");
04030 IF L=0 THEN BEGIN
04040 IF K=0 THEN OUT(CHAN3,CVS(J)) ELSE OUT(CHAN3," ");
04050 OUT(CHAN3,CVS(K)); END ELSE OUT(CHAN3," ");
04060 OUT(CHAN3,CVS(L)&" ");
04070 SETFORMAT(5,0);
04080 FOR M←0 STEP 1 UNTIL 1 DO BEGIN
04090 FOR O←0 STEP 1 UNTIL 1 DO BEGIN
04100 FOR P←0 STEP 1 UNTIL 1 DO BEGIN
04110 X←W+(M LSH 2)+(O LSH 1)+P;
04120 Q←TABLES[X];
04130 R←((Q LSH 2) LSH -20);
04140 Q←TABLES[X+74];
04150 R←R+(Q LSH -27)+((Q LSH 9) LSH -27)+((Q LSH 18) LSH -27)+((Q LSH 27) LSH -27);
04160 IF R=0 THEN OUT(CHAN3," ") ELSE OUT(CHAN3,CVS(R)&" ");
04170 END;
04180 OUT(CHAN3," ");
04190 END;
04200 OUT(CHAN3," ");
04210 END;
04220 OUT(CHAN3,CRLF);
04230 IF L≠0 THEN OUT(CHAN3,LF);
04240 END;
04250 END;
04260 END;
04270 OUT(CHAN3,TB&"OUTPUT VALUES"&CRLF);
04280 OUT(CHAN3,"IN6↓ IN3→ 0 1"&CRLF&
04290 " IN5↓ IN2→ 0 1 0 1"&CRLF&
04300 " IN4↓ IN1→ 0 1 0 1 0 1 0 1"&CRLF&LF);
04310 SETFORMAT(1,0);
04320
04330 FOR J←0 STEP 1 UNTIL 1 DO BEGIN
04340 FOR K←0 STEP 1 UNTIL 1 DO BEGIN
04350 FOR L←0 STEP 1 UNTIL 1 DO BEGIN
04360 W←I+10+(J LSH 5)+(K LSH 4)+(L LSH 3);
04370 SETFORMAT(2,0); OUT(CHAN3," ");
04380 IF L=0 THEN BEGIN
04390 IF K=0 THEN OUT(CHAN3,CVS(J)) ELSE OUT(CHAN3," ");
04400 OUT(CHAN3,CVS(K)); END ELSE OUT(CHAN3," ");
04410 OUT(CHAN3,CVS(L)&" ");
04420 SETFORMAT(1,0);
04430 FOR M←0 STEP 1 UNTIL 1 DO BEGIN
04440 FOR O←0 STEP 1 UNTIL 1 DO BEGIN
04450 FOR P←0 STEP 1 UNTIL 1 DO BEGIN
04460 X←W+(M LSH 2)+(O LSH 1)+P;
04470 Q←TABLES[X];
04480 R←(Q LSH 18) LSH -33;
04490 S←(Q LSH 21) LSH -33;
04500 T←(Q LSH 24) LSH -33;
04510 U←(Q LSH 27) LSH -33;
04520 V←(Q LSH 30) LSH -33;
04530 OUT(CHAN3,CVS(R)&CVS(S)&CVS(T)&CVS(U)&CVS(V)&" ");
04540 END;
04550 OUT(CHAN3," ");
04560 END;
04570 OUT(CHAN3," ");
04580 END;
04590 OUT(CHAN3,CRLFO);
04600 IF L≠0 THEN OUT(CHAN3,LF);
04610 END;
04620 END;
04630 END;
04640 END; ⊂ End of INK=6;
04650 I←I+74; N←N+1;
04660 END; ⊂ End of Q;
04670 OUT(CHAN3,CRLF);
04675 II←II+1;
04680 IF I>TABSIZ -75 THEN DONE;
04690 N←N+1; IF LIST[N]=0 THEN DONE; END;
04700 CLOSE(CHAN3);
04710 RELEASE(CHAN3);
04720 SPOOL("TABSUM.DOC",GETCHAN,1);
04730 OUTSTR("Output sent to spooler as TABSUM.DOC");
04740
04750 END "SEE";